/********************************************************************************************
*            Copyright (c) 2013. All Rights Reserved.
*
*
* 文件名称:   qxwz_service.h
* 描    述:	 
* 当前版本:   V1.0
* 日    期:   
* 创 建 人:   
* 	天线在车顶无车速：MC120A_ROOF
	天线在车顶有车速：MC120A_ROOF_ODO
	天线在中控台无车速：MC120A_INSIDE
	天线在中控台有车速：MC120A_INSIDE_ODO
*********************************************************************************************/
#ifndef QXWZ_SERVICE_H
#define QXWZ_SERVICE_H

/* FreeRTOS Kernel includes. */
#include "os_app.h"
#include "qxwz_sdk_hl.h"

typedef void (*qxwz_nmea_info_fun)(  uint8_t* data, uint16_t len );

extern QXWZSdkInterface *sdk_hl; 

//#define QXWZDEVICE_TYPE         "MC120A"
#define QXWZDEVICE_TYPE         "MC120A_INSIDE_ODO"
/****************************************************************************************
* QXWZ 配置参数结构体
******************************************************************************************/
#define QXWZ_CFG_MAX_LEN    ( 32 )

typedef struct
{   
	uint8_t  app_key[QXWZ_CFG_MAX_LEN];      
	uint8_t  app_secret[QXWZ_CFG_MAX_LEN];
	uint8_t  device_type[QXWZ_CFG_MAX_LEN];
	uint8_t  device_id[QXWZ_CFG_MAX_LEN];
}qxwz_save_cfg_infor_t;

/****************************************************************************************
* QXWZ 数据激活状态
******************************************************************************************/
typedef enum
{   
    DATA_ACTIVE_INIT = 0x00,  	/*数据激活初始化*/
    DATA_ACTIVE_SUCC,         	/*数据激活成功*/
}qxwz_data_active_status_e;

/** ****************************************************************************
* @remarks       uint32_t qxwz_inject_para_init( qxwz_nmea_info_fun fun, uint8_t *gpdrc_p, uint8_t *gpdrc4_p )
* @brief         千寻模块网络参数初始化
* @param[in]     fun 数据回调函数地址，*gpdrc_p GPDRC参数配置地址，*gpdrc4_p GPDRC4参数配置地址
* @param[out]    无
* @return        pdPASS 成功      pdFAIL
* @attention     GPDRC 服务器参数，GPDRC4 惯导数据
*******************************************************************************/
extern uint32_t qxwz_inject_para_init( qxwz_nmea_info_fun fun, uint8_t *gpdrc_p, uint8_t *gpdrc4_p );

/** ****************************************************************************
* @remarks       uint32_t qxwz_inject_sdk_start( void )
* @brief         启动 千寻模块数据接口
* @param[in]     无
* @param[out]    无
* @return        pdPASS 成功      pdFAIL
* @attention     无
*******************************************************************************/
extern uint32_t qxwz_inject_sdk_start( void );

/** ****************************************************************************
* @remarks       uint32_t qxwz_inject_sdk_stop( void )
* @brief         停止 千寻模块数据接口
* @param[in]     无
* @param[out]    无
* @return        pdPASS 成功      pdFAIL
* @attention     无
*******************************************************************************/
extern uint32_t qxwz_inject_sdk_stop( void );

/** ****************************************************************************
* @remarks       void qxwz_inject_gnss_data( QXWZSdkInterface *psdk_hl, UINT8 *data, UINT16 len)
* @brief         千寻模块串口数据接口
* @param[in]     *psdk_hl  SDK参数指针
* @param[in]     *data 数据源地址
* @param[in]     len 数据长度
* @param[out]    无
* @return        无
* @attention     无
*******************************************************************************/
extern void qxwz_inject_gnss_data( QXWZSdkInterface *psdk_hl, UINT8 *data, UINT16 len);

/** ****************************************************************************
* @remarks       void qxwz_inject_cfg_init( qxwz_save_cfg_infor_t *qwxz_cfg )
* @brief         初始化QXWZ 配置参数
* @param[in]     qwxz_cfg 初始化数据
* @param[out]    无
* @return        无
* @attention     无
*******************************************************************************/
extern void qxwz_inject_cfg_init( qxwz_save_cfg_infor_t *qwxz_cfg );

/** ****************************************************************************
* @remarks       uint32_t qxwz_inject_cfg_save_flash_write( qxwz_save_cfg_t qwxz_cfg )
* @brief         保存QXWZ 配置参数到外部FLASH中
* @param[in]     *qwxz_cfg 保存数据源地址
* @param[out]    无
* @return        pdPASS 成功 pdFAIL 失败
* @attention     无
*******************************************************************************/
extern uint32_t qxwz_inject_cfg_save_flash_write( qxwz_save_cfg_infor_t *qwxz_cfg );

/** ****************************************************************************
* @remarks       uint32_t qxwz_inject_cfg_save_flash_read( qxwz_save_cfg_t *qwxz_cfg )
* @brief         读取 QXWZ 配置参数
* @param[in]     无
* @param[out]    *qwxz_cfg 读取数据目标地址
* @return        pdPASS 成功 pdFAIL 失败
* @attention     无
*******************************************************************************/
extern uint32_t qxwz_inject_cfg_save_flash_read( qxwz_save_cfg_infor_t *qwxz_cfg );

/** ****************************************************************************
* @remarks       uint32_t qxwz_inject_cfg_parameter_status_get( void )
* @brief         获取QXWZ 参数配置的状态
* @param[in]     无
* @param[out]    无
* @return        pdPASS 已配置 pdFAIL 无配置
* @attention     无
*******************************************************************************/
extern uint32_t qxwz_inject_cfg_parameter_status_get( void );

/** ****************************************************************************
* @remarks       uint32_t qxwz_inject_sensor_data_set( float speed , uint64_t time )
* @brief         设置传感器数据
* @param[in]     speed 速度， time 时间
* @param[out]    无
* @return        pdPASS 成功 pdFAIL 失败
* @attention     无
*******************************************************************************/
extern uint32_t qxwz_inject_sensor_data_set( float speed , uint64_t time );

/** ****************************************************************************
* @remarks       uint32_t qxwz_inject_gpdrc_4_flash_write( qxwz_save_cfg_infor_t qwxz_cfg )
* @brief         保存GPDRC / GPDRC4 数据到外部FLASH
* @param[in]     *gpdrc *gpdrc4保存数据源地址
* @param[out]    无
* @return        pdPASS 成功 pdFAIL 失败
* @attention     无
*******************************************************************************/
extern uint32_t qxwz_inject_gpdrc_4_flash_write( uint8_t *gpdrc, uint8_t *gpdrc4 );

/** ****************************************************************************
* @remarks       uint32_t qxwz_inject_gpdrc_4_flash_read( uint8_t *gpdrc, uint8_t *gpdrc4 )
* @brief         读取 GPDRC / GPDRC4 参数
* @param[in]     无
* @param[out]    *gpdrc / *gpdrc4 读取数据目标地址
* @return        pdPASS 成功 pdFAIL 失败
* @attention     无
*******************************************************************************/
extern uint32_t qxwz_inject_gpdrc_4_flash_read( uint8_t *gpdrc, uint8_t *gpdrc4 );

/** ****************************************************************************
* @remarks       void qxwz_inject_gpdrc_4_flash_clear( void )
* @brief         清空 GPDRC / GPDRC4 FLASH数据
* @param[in]     无
* @param[out]    无
* @return        无
* @attention     无
*******************************************************************************/
extern void qxwz_inject_gpdrc_4_flash_clear( void );

#endif
